import ol from "ol/dist/ol";
import array = ol.array;

/**
 * 表单输入模型
 *
 * fast-from 相关设计
 */
export interface FormInputModel {
    // 字段名，提交表单时候用的字段名
    name: string;
    // 字段值，经过格式化，能被组件使用的值
    value: any;
    // 标签值，展示在前端，能被用户看到的字段名
    label: string;
    // 占位符，用于提示的字段
    placeholder: string;
    // 可选的值，组件配置参数
    options: any;

    // 栈格布局中，输入框 label 和 input 的宽度比例
    col: array<number>;
    // 栈格布局中，输入框本身宽度占比
    span: number;

    // 3大属性：隐藏、只读、禁用
    hidden: boolean;
    // 是否只读
    readonly: boolean;
    // 是否禁用
    disabled: boolean;

    // 是否必填
    require: boolean;
}


/**
 * 年表 - 采用的标准
 *
 * 标准日期格式
 */
export interface Chronology {
    id: string; // e.g., "ISO"
    calendarType: string;// e.g., "iso8601"
}

/**
 * 日期对象所包含的字段
 *
 * 标准日期格式
 */
export interface DateTimeObject {
    month: string; // e.g., "AUGUST"
    year: number;
    dayOfMonth: number;
    hour: number;
    minute: number;
    monthValue: number;
    nano: number; // Nanoseconds
    second: number;
    dayOfWeek: string; // e.g., "MONDAY"
    dayOfYear: number;
    chronology: Chronology;
}

/**
 * 分页数据
 */
export interface Page {
    // 数据列表
    list: Array<any>;
    // 数据总量
    total: number;
}

// /**
//  * 数据字典
//  */
// export interface Dictionary {
//     // 名字
//     list: Array<Option>;
//     // 默认样式
//     defaultStyle?: string;
// }

/**
 * 数据字典元素
 */
export interface DictionaryItem {
    /**
     * 名字
     */
    value: string | number | boolean;
    /**
     * 标签
     */
    label: string;
    /**
     * 样式
     */
    style?: string;
    /**
     * 原始数据
     *
     * 这个需要注意，会不会有不同数据，格式化成相同字典的情况
     */
    ref?: any;
}